↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
fl_in_aag([], [], 0) → fl_out_aag([], [], 0)
fl_in_aag(.(E, X), R, s(Z)) → U1_aag(E, X, R, Z, append_in_aaa(E, Y, R))
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
U1_aag(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_aag(E, X, R, Z, fl_in_aag(X, Y, Z))
U2_aag(E, X, R, Z, fl_out_aag(X, Y, Z)) → fl_out_aag(.(E, X), R, s(Z))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
fl_in_aag([], [], 0) → fl_out_aag([], [], 0)
fl_in_aag(.(E, X), R, s(Z)) → U1_aag(E, X, R, Z, append_in_aaa(E, Y, R))
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
U1_aag(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_aag(E, X, R, Z, fl_in_aag(X, Y, Z))
U2_aag(E, X, R, Z, fl_out_aag(X, Y, Z)) → fl_out_aag(.(E, X), R, s(Z))
FL_IN_AAG(.(E, X), R, s(Z)) → U1_AAG(E, X, R, Z, append_in_aaa(E, Y, R))
FL_IN_AAG(.(E, X), R, s(Z)) → APPEND_IN_AAA(E, Y, R)
APPEND_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U3_AAA(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
APPEND_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_AAA(Xs, Ys, Zs)
U1_AAG(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_AAG(E, X, R, Z, fl_in_aag(X, Y, Z))
U1_AAG(E, X, R, Z, append_out_aaa(E, Y, R)) → FL_IN_AAG(X, Y, Z)
fl_in_aag([], [], 0) → fl_out_aag([], [], 0)
fl_in_aag(.(E, X), R, s(Z)) → U1_aag(E, X, R, Z, append_in_aaa(E, Y, R))
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
U1_aag(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_aag(E, X, R, Z, fl_in_aag(X, Y, Z))
U2_aag(E, X, R, Z, fl_out_aag(X, Y, Z)) → fl_out_aag(.(E, X), R, s(Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
FL_IN_AAG(.(E, X), R, s(Z)) → U1_AAG(E, X, R, Z, append_in_aaa(E, Y, R))
FL_IN_AAG(.(E, X), R, s(Z)) → APPEND_IN_AAA(E, Y, R)
APPEND_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U3_AAA(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
APPEND_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_AAA(Xs, Ys, Zs)
U1_AAG(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_AAG(E, X, R, Z, fl_in_aag(X, Y, Z))
U1_AAG(E, X, R, Z, append_out_aaa(E, Y, R)) → FL_IN_AAG(X, Y, Z)
fl_in_aag([], [], 0) → fl_out_aag([], [], 0)
fl_in_aag(.(E, X), R, s(Z)) → U1_aag(E, X, R, Z, append_in_aaa(E, Y, R))
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
U1_aag(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_aag(E, X, R, Z, fl_in_aag(X, Y, Z))
U2_aag(E, X, R, Z, fl_out_aag(X, Y, Z)) → fl_out_aag(.(E, X), R, s(Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
APPEND_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_AAA(Xs, Ys, Zs)
fl_in_aag([], [], 0) → fl_out_aag([], [], 0)
fl_in_aag(.(E, X), R, s(Z)) → U1_aag(E, X, R, Z, append_in_aaa(E, Y, R))
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
U1_aag(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_aag(E, X, R, Z, fl_in_aag(X, Y, Z))
U2_aag(E, X, R, Z, fl_out_aag(X, Y, Z)) → fl_out_aag(.(E, X), R, s(Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
APPEND_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_AAA(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
APPEND_IN_AAA → APPEND_IN_AAA
APPEND_IN_AAA → APPEND_IN_AAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
FL_IN_AAG(.(E, X), R, s(Z)) → U1_AAG(E, X, R, Z, append_in_aaa(E, Y, R))
U1_AAG(E, X, R, Z, append_out_aaa(E, Y, R)) → FL_IN_AAG(X, Y, Z)
fl_in_aag([], [], 0) → fl_out_aag([], [], 0)
fl_in_aag(.(E, X), R, s(Z)) → U1_aag(E, X, R, Z, append_in_aaa(E, Y, R))
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
U1_aag(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_aag(E, X, R, Z, fl_in_aag(X, Y, Z))
U2_aag(E, X, R, Z, fl_out_aag(X, Y, Z)) → fl_out_aag(.(E, X), R, s(Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
FL_IN_AAG(.(E, X), R, s(Z)) → U1_AAG(E, X, R, Z, append_in_aaa(E, Y, R))
U1_AAG(E, X, R, Z, append_out_aaa(E, Y, R)) → FL_IN_AAG(X, Y, Z)
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PrologToPiTRSProof
U1_AAG(Z, append_out_aaa(E)) → FL_IN_AAG(Z)
FL_IN_AAG(s(Z)) → U1_AAG(Z, append_in_aaa)
append_in_aaa → append_out_aaa([])
append_in_aaa → U3_aaa(append_in_aaa)
U3_aaa(append_out_aaa(Xs)) → append_out_aaa(.(Xs))
append_in_aaa
U3_aaa(x0)
From the DPs we obtained the following set of size-change graphs:
fl_in_aag([], [], 0) → fl_out_aag([], [], 0)
fl_in_aag(.(E, X), R, s(Z)) → U1_aag(E, X, R, Z, append_in_aaa(E, Y, R))
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
U1_aag(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_aag(E, X, R, Z, fl_in_aag(X, Y, Z))
U2_aag(E, X, R, Z, fl_out_aag(X, Y, Z)) → fl_out_aag(.(E, X), R, s(Z))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
fl_in_aag([], [], 0) → fl_out_aag([], [], 0)
fl_in_aag(.(E, X), R, s(Z)) → U1_aag(E, X, R, Z, append_in_aaa(E, Y, R))
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
U1_aag(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_aag(E, X, R, Z, fl_in_aag(X, Y, Z))
U2_aag(E, X, R, Z, fl_out_aag(X, Y, Z)) → fl_out_aag(.(E, X), R, s(Z))
FL_IN_AAG(.(E, X), R, s(Z)) → U1_AAG(E, X, R, Z, append_in_aaa(E, Y, R))
FL_IN_AAG(.(E, X), R, s(Z)) → APPEND_IN_AAA(E, Y, R)
APPEND_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U3_AAA(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
APPEND_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_AAA(Xs, Ys, Zs)
U1_AAG(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_AAG(E, X, R, Z, fl_in_aag(X, Y, Z))
U1_AAG(E, X, R, Z, append_out_aaa(E, Y, R)) → FL_IN_AAG(X, Y, Z)
fl_in_aag([], [], 0) → fl_out_aag([], [], 0)
fl_in_aag(.(E, X), R, s(Z)) → U1_aag(E, X, R, Z, append_in_aaa(E, Y, R))
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
U1_aag(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_aag(E, X, R, Z, fl_in_aag(X, Y, Z))
U2_aag(E, X, R, Z, fl_out_aag(X, Y, Z)) → fl_out_aag(.(E, X), R, s(Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
FL_IN_AAG(.(E, X), R, s(Z)) → U1_AAG(E, X, R, Z, append_in_aaa(E, Y, R))
FL_IN_AAG(.(E, X), R, s(Z)) → APPEND_IN_AAA(E, Y, R)
APPEND_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U3_AAA(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
APPEND_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_AAA(Xs, Ys, Zs)
U1_AAG(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_AAG(E, X, R, Z, fl_in_aag(X, Y, Z))
U1_AAG(E, X, R, Z, append_out_aaa(E, Y, R)) → FL_IN_AAG(X, Y, Z)
fl_in_aag([], [], 0) → fl_out_aag([], [], 0)
fl_in_aag(.(E, X), R, s(Z)) → U1_aag(E, X, R, Z, append_in_aaa(E, Y, R))
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
U1_aag(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_aag(E, X, R, Z, fl_in_aag(X, Y, Z))
U2_aag(E, X, R, Z, fl_out_aag(X, Y, Z)) → fl_out_aag(.(E, X), R, s(Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APPEND_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_AAA(Xs, Ys, Zs)
fl_in_aag([], [], 0) → fl_out_aag([], [], 0)
fl_in_aag(.(E, X), R, s(Z)) → U1_aag(E, X, R, Z, append_in_aaa(E, Y, R))
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
U1_aag(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_aag(E, X, R, Z, fl_in_aag(X, Y, Z))
U2_aag(E, X, R, Z, fl_out_aag(X, Y, Z)) → fl_out_aag(.(E, X), R, s(Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APPEND_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APPEND_IN_AAA(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
APPEND_IN_AAA → APPEND_IN_AAA
APPEND_IN_AAA → APPEND_IN_AAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
FL_IN_AAG(.(E, X), R, s(Z)) → U1_AAG(E, X, R, Z, append_in_aaa(E, Y, R))
U1_AAG(E, X, R, Z, append_out_aaa(E, Y, R)) → FL_IN_AAG(X, Y, Z)
fl_in_aag([], [], 0) → fl_out_aag([], [], 0)
fl_in_aag(.(E, X), R, s(Z)) → U1_aag(E, X, R, Z, append_in_aaa(E, Y, R))
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
U1_aag(E, X, R, Z, append_out_aaa(E, Y, R)) → U2_aag(E, X, R, Z, fl_in_aag(X, Y, Z))
U2_aag(E, X, R, Z, fl_out_aag(X, Y, Z)) → fl_out_aag(.(E, X), R, s(Z))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
FL_IN_AAG(.(E, X), R, s(Z)) → U1_AAG(E, X, R, Z, append_in_aaa(E, Y, R))
U1_AAG(E, X, R, Z, append_out_aaa(E, Y, R)) → FL_IN_AAG(X, Y, Z)
append_in_aaa([], X, X) → append_out_aaa([], X, X)
append_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U3_aaa(X, Xs, Ys, Zs, append_in_aaa(Xs, Ys, Zs))
U3_aaa(X, Xs, Ys, Zs, append_out_aaa(Xs, Ys, Zs)) → append_out_aaa(.(X, Xs), Ys, .(X, Zs))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
U1_AAG(Z, append_out_aaa(E)) → FL_IN_AAG(Z)
FL_IN_AAG(s(Z)) → U1_AAG(Z, append_in_aaa)
append_in_aaa → append_out_aaa([])
append_in_aaa → U3_aaa(append_in_aaa)
U3_aaa(append_out_aaa(Xs)) → append_out_aaa(.(Xs))
append_in_aaa
U3_aaa(x0)
From the DPs we obtained the following set of size-change graphs: